import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


/**
 * La salade permet de nourrir ses escargots afin de les faire grossir
 * et d'en tirer le meilleur prix.
 */
public class Salade {
	
	private String variete;
    private float valeurNutritive;
    private boolean etatTraitement;
    private int positionSalade_x;
    private int positionSalade_y;
    private int prixSalade;
    private int prixTraitement;
    private int emplacementSalade;
    private Environnement environnement;
    private BufferedImage img;

/**    
 * @param variete
 * @param valeurNutritive
 * @param etatTraitement
 * @param positionSalade_x
 * @param positionSalade_y
 * @param prixSalade
 * @param prixTraitement
 * @param _environnement
 */
    public Salade(String variete, int valeurNutritive, boolean etatTraitement,
    		int positionSalade_x, int positionSalade_y, int prixSalade,
			int prixTraitement, Environnement _environnement) {
		this.variete = variete;
		this.valeurNutritive = valeurNutritive;
		this.etatTraitement = etatTraitement;
		this.positionSalade_x = positionSalade_x;
		this.positionSalade_y = positionSalade_y;
		this.prixSalade = prixSalade;
		this.prixTraitement = prixTraitement;
		this.environnement = _environnement;
	}
/**
 * verifie le nombre de salade dans l'environnement
 * @param i 
 * 		index de la salade a verifier
 */
	public void verifierSalade(int i){
		
			if (environnement.getModele().getListeSalade().elementAt(i).getValeurNutritive()<=0){
				environnement.getModele().getListeSalade().remove(environnement.getModele().getListeSalade().elementAt(i));
				environnement.getModele().getBarreDeJeu().getBoutiqueAchatSalade().setNombreDeSaladeEnJeu(environnement.getModele().getBarreDeJeu().getBoutiqueAchatSalade().getNombreDeSaladeEnJeu()-1);
			}		
	}
    
/**
 * choisie la salade en  fonction de sa valeur nutritive
 * @return emplacementSalade
 * 		l'emplacement de la salade choisi dans l'environnement.
 */
    public int choixSalade() {	
 		for (int i = 0; i <= (environnement.getModele().getListeSalade().size())-1; i++){
		int valeurNutritiveMax=0;  		
		if (valeurNutritiveMax < environnement.getModele().getListeSalade().elementAt(i).getValeurNutritive()){
			valeurNutritiveMax=environnement.getModele().getListeEscargot().elementAt(i).getPoids();
			emplacementSalade=i;}
		}
	return emplacementSalade;
}
    
    /**
 	* fonction appelee pour chaque repaint de l'environnement de jeu
 	* 
 	* @param g
 	* 		element graphique
 	*/
    public void affichage(Graphics g) {
    	if (60<=this.getValeurNutritive() & this.getValeurNutritive()<=100){
    		try {
    			img = ImageIO.read(new File("img/saladeEtat1.png"));
    		} catch (IOException e) {
                        	e.printStackTrace();
    		}
            	g.drawImage(img,this.getPositionSalade_x(),this.getPositionSalade_y(),null);
        }
    	
    	if (30<=this.getValeurNutritive() & this.getValeurNutritive()<60){
    		try {
    			img = ImageIO.read(new File("img/saladeEtat2.png"));
    		} catch (IOException e) {
                        	e.printStackTrace();
    		}
            	g.drawImage(img,this.getPositionSalade_x(),this.getPositionSalade_y(),null);
        }
    	
    	if (1<=this.getValeurNutritive() & this.getValeurNutritive()<30){
    		try {
    			img = ImageIO.read(new File("img/saladeEtat3.png"));
    		} catch (IOException e) {
                        	e.printStackTrace();
    		}
            	g.drawImage(img,this.getPositionSalade_x(),this.getPositionSalade_y(),null);
        }

    	
    }
    	
    /**
     * Traite la salade pour un meileur rendement	
     */
    
    public void traiterSalade() {
    }

    /**
     * Creer un cadre pour eviter les collisions avec les autres elements de l'environnement
     */
    public void contourCollision() {
    }

    /**
     * Place la salade dans l'environnement
     * 
     */
    public void placerSalade() {
    }

    /**
     * Recupere la valeur nutritive de la salade
     * @return valeurNutritive
     */

	public float getValeurNutritive() {
		return valeurNutritive;
	}

	/**
	 * Defini une nouvelle valeur nutritive pour la salade
	 * @param valeurNutritive
	 */

	public void setValeurNutritive(int valeurNutritive) {
		this.valeurNutritive = valeurNutritive;
	}

	/**
	 *  Recupere la position de la salade en x
	 * @return positionSalade_x
	 */

	public int getPositionSalade_x() {
		return positionSalade_x;
	}
	
	/**
	 * Defini une nouvelle position de la salade en x
	 * @param positionSalade_x
	 */
	public void setPositionSalade_x(int positionSalade_x) {
		this.positionSalade_x = positionSalade_x;
	}

	/**
	 *  Recupere la position de la salade en y
	 * @return positionSalade_y
	 */
	public int getPositionSalade_y() {
		return positionSalade_y;
	}

	/**
	 * Defini une nouvelle position de la salade en y
	 * @param positionSalade_y
	 */
	public void setPositionSalade_y(int positionSalade_y) {
		this.positionSalade_y = positionSalade_y;
	}

	/**
	 * Defini un rectangle autour de la salade
	 * @return Rectangle
	 */
	public Rectangle getBounds() {
		return new Rectangle(this.getPositionSalade_x(), this.positionSalade_y, 60,60);
	}
	
	/**
	 * permet aux escargots de manger une partie de la valeur nutritive de la salade
	 * @param crocSalade
	 */
	public void mangerSalade(float crocSalade){
		this.valeurNutritive=this.valeurNutritive-crocSalade;
	}
	
}
